如何设置JVM堆大小避免OOM以及常见问题有哪些 您所在的位置:网站首页 jvm 内存大小设置 垃圾回收机制设置 如何设置JVM堆大小避免OOM以及常见问题有哪些

如何设置JVM堆大小避免OOM以及常见问题有哪些

2024-07-10 08:29| 来源: 网络整理| 查看: 265

常见问题容器出现137退出码的含义是什么?

当容器使用内存超过限制时,会出现容器OOM,导致容器被强制关闭。此时业务应用内存可能并未达到JVM堆大小上限,所以不会产生Dump日志。建议您调小JVM堆大小的上限,为容器内其他系统组件预留足够多的内存空间。m_exitcode_137

为什么发生OOM却没有生成Dump文件?

当发生OOM Killer时,并不一定会发生JVM OOM,所以不会生成Dump文件。您可以采取以下方式来避免这种情况。

如果是Java应用,可以适当调小JVM的堆内存大小。具体配置,请参见本文。

如果是非Java应用,可以调整实例规格,保证充裕的内存资源。具体配置,请参见变更实例规格。

堆大小和规格内存的参数值可以相同吗?

不可以。因为系统自身组件存在内存开销,例如使用SLS进行日志收集(设置日志收集至SLS)时会占用一小部分的内存空间,所以不能将JVM堆大小设置为和规格内存大小相同的数值,需要为这些系统组件预留足够的内存空间。

在JDK 8版本下设置-XX:MaxRAMPercentage值为整数时报错怎么处理?

这是JDK 8的一个Bug。具体信息,请参见Java Bug Database。例如,在JDK 8u191版本下,设置-XX:MaxRAMPercentage=70,此时JVM会启动报错。m_JDK8_bug

解决方案如下:

方式一:设置-XX:MaxRAMPercentage为70.0。

说明

如果您使用了-XX:InitialRAMPercentage或-XX:MinRAMPercentage,参数值同样不可设置为整数,需按照方式一的形式来设置。

方式二:升级JDK版本至JDK 10及以上版本。

为什么JVM参数设置了6 GB,但是内存使用率却很低?

虽然JVM参数已设置-Xms6g -Xmx6g,但是操作系统不会马上分配6 GB的物理内存,需要实际使用后才分配。因此,内存使用率在应用启动的时候,会相对较低,后续会出现攀爬现象。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有